Image processing apparatus and method

ABSTRACT

An image processing system and method include allowing an output device to output patch-data items of plural multi-order colors represented by a first color space, measuring the color values, in an absolute color space, of the output patch-data items, calculating reference values by converting the plural multi-order colors represented by the first color space based on a first color conversion table containing correspondence between the first color space and the absolute color space, calculating distances between the color values measured by the color measuring means and the reference values, which correspond thereto, and correcting, based on the calculated distances, a second color conversion table containing correspondence between the absolute color space and an output color space.

CROSS REFERENCE OF RELATED APPLICATIONS

This application is continuation of U.S. application Ser. No. 11/008,072filed Dec. 8, 2004 which claims priority from Japanese PatentApplication No. 2003-412213 filed Dec. 10, 2003, the entire contents ofwhich are both hereby incorporated by reference herein.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to image processing systems andmethods and more specifically to image processing systems and methodsfor performing color management.

2. Description of the Related Art

The importance of color management systems cannot be over-emphasized.With color management systems, color reproduction devices such asscanners, monitors and output devices can be characterized to provideimage settings for optimal reproduction. Recently, with widespreadcolorization of output devices, the importance of a color-managementtechnology for managing color information has become increased. Sincedifferent color reproduction devices have different color-reproductionranges, color image data for one device cannot be directly used inanother device. Accordingly, conventional systems are used wherein colorimage data corresponding to an input color space of an input device istemporarily converted to an absolute intermediate (independent) colorspace prior to conversion to an output color space of an output device.

FIG. 1 illustrates image data output from the input color space of aninput device to the output color space of an output device. Image datais output by using a source profile 202 of the input device to transformthe image from the input color space 201 to an absolute color space 203(intermediate color space). The absolute color space 203 is converted toan output color space 205 by using a destination profile 204. The sourceprofile 202 is a profile based on characteristics of the input deviceand is used for converting the input color space 201 to the absolutecolor space 203. The destination profile 204 is a profile based oncharacteristics of the output device for converting the absolute colorspace 203 to the output color space 205. At present, standardized formatICC (International Color Consortium) profiles are used in many cases.

FIGS. 6A and 6B are look-up tables for converting betweendevice-dependent CMYK space and device-independent L*a*b* space inaccordance with standard ICC specifications. In FIG. 6A, the look-uptable is used in a source profile to transform image data from CMYK toL*a*b* while the look-up table of FIG. 6B is used to transform imagedata from L*a*b* to CMYK in accordance with ICC specifications.

In general, input and output devices have standardized ICC profiles thatare created by hardware device manufacturers to reflect devicecharacteristics at the time of manufacture. However, since such devicecharacteristics do change over time, ICC-profile-creating tools andcalorimeters are provided to update or create new profiles to reflectcurrent characteristics of the devices.

Color reproduction can be enhanced in a multifunction peripheral (MFP)having a printer used as an output device and a having a scanner used asan input device, by using the printer to output low to high densitypatches composed of primary colors (cyan, magenta, yellow), and thenusing the scanner to read the patches, and then performing primary colorcalibration. Although this technique enables desirable color matchingfor primary colors, it less effective for higher-order colors obtainedby mixing a plurality of color materials.

Nevertheless, even in MFPs, and in particular, when the output device isan electrographic printer, high quality reproduction of color cannot beobtained due to rapid daily changes in device status (for example, thecolor and quality of output images rapidly change due to changes indevice status compared with images output by the inkjet printer), sothat output images vary even if the same profile is used in the samedevice.

For the same reason, if a plurality of devices use the same profile tooutput the same data, each device outputs a different color image.

In addition, by using ICC-profile-creating tool and calorimeter, an ICCprofile which matches a device status at that time can be created, sothat an image can be output in desirable color. However, new profilesneed to be created by first outputting numerous color patches and thenmeasuring each and every color patch. This process is not onlytime-consuming, but it is also computation-intensive particularly fordevices whose status often varies daily.

SUMMARY OF THE INVENTION

The present invention provides an image processing system and method.Among other advantages, the image processing system and methodfacilitates color conversion for a device whose status variesmomentarily, and allows the device to output desirable color at anytime.

According to an aspect of the present invention, an image processingsystem is provided which includes an output unit for allowing an outputdevice to output patch-data items of plural multi-order colorsrepresented by a first color space, a color measuring unit for measuringthe color values, in an absolute color space, of the patch-data itemsoutput from the output device, a reference-value calculating unit forcalculating reference values by converting the plural multi-order colorsrepresented by the first color space based on a first color conversiontable containing correspondence between the first color space and theabsolute color space, a distance calculating unit for calculatingdistances between the color values measured by the color measuring unitand the reference values, which correspond thereto, and a correctingunit for correcting, based on the distances calculated by the distancecalculating unit, a second color conversion table containingcorrespondence between the absolute color space and an output colorspace.

According to another aspect of the present invention, an imageprocessing method is provided which includes an output step of allowingan output device to output patch-data items of plural multi-order colorsrepresented by a first color space, a color measuring step of measuringthe color values, in an absolute color space, of the patch-data itemsoutput from the output device, a reference-value calculating step ofcalculating reference values by converting the plural multi-order colorsrepresented by the first color space based on a first color conversiontable containing correspondence between the first color space and theabsolute color space, a distance calculating step of calculatingdistances between the color values measured in the color measuring stepand the reference values, which correspond thereto, and a correctingstep of correcting, based on the distances calculated in the distancecalculating step, a second color conversion table containingcorrespondence between the absolute color space and an output colorspace.

According to another aspect of the present invention, a program forexecuting the above method is provided.

According to another aspect of the present invention, acomputer-readable storage medium storing the above program is provided.

Further aspects, features and advantages of the present invention willbecome apparent from the following description of the embodiments withreference to the attached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram showing color space changes in the case ofoutputting an image from an input device to an output device.

FIG. 2 is a block diagram showing an example of the configuration of animage processing system according to a first embodiment of the presentinvention.

FIG. 3A is a block diagram showing a management PC in the firstembodiment, and FIG. 3B is a block diagram showing an MFP in the firstembodiment.

FIG. 4 is an illustration of a flow of data conversion in the case ofoutputting an image from the input device to the output device in thefirst embodiment.

FIG. 5 is a flowchart showing a profile adjustment process of themanagement PC in the first embodiment.

FIGS. 6A and 6 b are illustrations of data representation forms of anICC profile.

FIG. 7 is a flowchart showing an interpolation calculation process inthe first embodiment.

FIG. 8 is a flowchart showing a process for updating a look-up table forconversion from L*a*b* to CMYK in the first embodiment.

FIG. 9 is an illustration of a flow of data conversion using an updateddestination profile.

FIG. 10 is an illustration of a data flow in a case in which adestination profile includes a look-up table for conversion from L*a*b*to RGB.

FIG. 11 is an illustration of lattice point data in an L*a*b* space.

FIG. 12 is an illustration of measured color values and reference valuesin lattice point data in the L*a*b* space.

FIG. 13 is an illustration of differences in L*a*b* space between itemsof lattice point data, and measured color values and reference valueswhich correspond to the items.

FIG. 14 is a flowchart showing another process for updating a look-uptable for conversion from L*a*b* to CMYK.

FIGS. 15A and 15B are graphs showing a condition range in anotherprocess for updating a look-up table for conversion from L*a*b* to CMYK.

FIG. 16 is a block diagram showing a data conversion flow in the case ofoutputting an image from an input device to an output device in a secondembodiment of the present invention.

FIG. 17 is a flowchart showing an outline of a profile adjusting processof a management PC in the second embodiment.

FIG. 18 is an illustration of a user interface screen for designatingcolor reproduction accuracy and processing speed.

FIG. 19 is a flowchart showing an interpolation calculation process inthe second embodiment.

FIG. 20 is a flowchart showing a representative value calculatingprocess in the second embodiment by utilizing the clustering.

FIG. 21 is an illustration of an example of a user interface screen fordesignating a particular portion of an image.

FIG. 22 is a flowchart showing an example of processing for creating aprofile which matches a particular image portion designated by a user.

DETAILED DESCRIPTION OF THE EMBODIMENTS

A detailed description of embodiments of the present invention isdescribed below with reference to the accompanying drawings.

First Embodiment

FIG. 2 is a block diagram showing an example of the configuration of animage processing system in a first embodiment of the present invention.The image processing system connects offices 10 and 20 via acommunication link such as the Internet 108. Among other components,office 10 includes MFPs 101 and 102, a management personal computer (PC)104, a client PC 105, and a proxy server 106 all of which are coupledvia a local area network (LAN) 109. The LAN 109 (Office 10) and a LAN110 (Office 20) are connected to the Internet 108 via proxy servers 106located in each office.

The MFPs 101 and 102 receive and output image information. Color patchesoutput from the MFPs are measured by a calorimeter 103 connected to themanagement PC 104, which performs image processing, uses output colorvalues from the color patches to update or create new profiles for theMFPs. The management PC 104 communicates the updated or created profilesto the MFPs. The clients PC 105 and 107 are provided for user operation.

FIG. 3A is a block diagram showing the configuration of the managementPC 104. As shown in FIG. 3A, the management PC 104 includes a centralprocessing unit (CPU) 1 for controlling the PC, a read-only memory (ROM)2 for storing a boot program, etc., and a random access memory (RAM) 3for temporarily storing information while the PC is active.

The management PC 104 also includes a hard disk drive (HDD) 4, which isthe permanent storage unit for programs and other information. The HDD 4stores, for example, an operating system (OS), a color managementprogram and color patch data. A video RAM (VRAM) 5 is a memory intowhich image data to be displayed is loaded. By loading the image datainto the VRAM 5, the image can be displayed on a cathode-ray tube (CRT)6. A keyboard 7 and a mouse 8 are used for various types of setting. AUSB interface (I/F) 9 is used to establish connection to the calorimeter103 through the USB 111. A network interface (I/F) 30 is used toestablish connection to the LAN 109. The management PC 104 is connectedto the MFP 102 through the direct-connection LAN 112.

FIG. 3B is a block diagram showing the configuration of the MFP 102. InFIG. 3B, the MFP 102 includes an image reading unit 301 which includesan auto-document feeder (not shown). Although not shown, the imagereading unit 301 uses a light source to illuminate one or more documentimages, uses a lens unit to focus each reflected document image on asolid-state image sensing device, and obtains a raster image-read signalhaving a density of 600 dpi from the solid-state image sensing device.For copying, the image signal is converted into a recording signal by adata processing unit 305, and, by outputting the recording signal to arecording unit 303, an image is formed on paper. Plural document imagesare copied by temporarily storing recording data for each page in astorage unit 302, and then sequentially outputting the recording data tothe recording unit 303, each image is formed on paper.

An input unit 306 is a user input device such as the keyboard 7 andmouse 8 of FIG. 3A. The above consecutive operation is controlled by acontrol unit (not shown) in the data processing unit 305. In addition,the status of operation input and the image data are displayed on thedisplay unit 304.

The storage unit 302 stores the recording data in units of pages andalso stores source profiles and a destination profiles. The storage unit302 is also controlled by the management PC 104. Exchange of data andcontrol between each MFP and the management PC 104 are performed byusing a network interface (I/F) 307 and the direct-connection LAN 112.

Printing data output from the client PC 105 is input from the LAN 109 tothe data processing unit 305 through the network interface 307. Theinput printing data is converted into recordable raster data by the dataprocessing unit 305, and a recording image based on the raster data isformed on paper by the recording unit 303.

When CMYK data is sent from the client PC 105 to the MFPs 101 and 102,the data processing unit 305 performs the process shown in FIG. 4. Whenthe data processing unit 305 receives image data 401, the image data 401is represented in CMYK form. The data processing unit 305 uses a sourceprofile 402 to convert the received image data 401 into image data 403represented in L*a*b*. Next, the data processing unit 305 uses adestination profile 404 to convert the image data 403 to image data 405represented in CMYK′. Although the CMYK image data 401 and the CMYK′image data 405 are identical in dimension, their actual values differsince they are defined by different devices. As indicated by the arrow406 shown in FIG. 4, the CMYK image data 401 can be directly output asthe CMYK′ image data 405 without using the source profile 402 and thedestination profile 404. However, in such a case, device characteristicsare not reflected, so that undesirable images are often output.

Outline of the Process Adjustment Process

Next, a profile adjustment process of the management PC 104 in the firstembodiment is described below with reference to the flowchart shown inFIG. 5.

As an exemplary method, the flowchart of FIG. 5 is implemented by acolor management program installed on the HDD 4. Upon being loaded intothe RAM 3, the color management program is executed by the CPU 1 of PC104.

In step S501, CMYK patch data is read from the HDD 4. The patch data iscomposed of about one hundred higher-order colors and is made of CMYKnumerical data and CMYK image data. In step S502, the MFP 101 outputsthe patch data. Here, the CMYK patch data 401 is directly output as theCMYK′ image data 405 without using the source profile 402 anddestination profile 404 of FIG. 4. In step S503, the calorimeter 103 isused to perform color measurement on the output patch data. The resultof measurement is sent to the management PC 104 through the USB 111, andan L*a*b* measured color value is calculated in the management PC 104 instep S504. The L*a*b* measured color value reflects the presentreproduction state of the MFP 101.

In step S505, an ICC profile is read. For example, a destination profilestored on the MFP 101 is read. Alternatively, the destination profilemay be stored and read from the management PC 104. In step S506, theprocess extracts a look-up table (included in the destination profile)for conversion from CMYK to L*a*b*. In step S507, an interpolationprocess further described with reference to FIG. 7 is performed. As aresult, an L*a*b* reference value is calculated in step S508. In stepS509, the process extracts, from the destination profile, a look-uptable for conversion from L*a*b* to CMYK.

After that, in step S510, by using the L*a*b* measured color value, theL*a*b* reference value, and the look-up table for conversion from L*a*b*to CMYK, the look-up table for conversion from L*a*b* to CMYK isupdated. Note that this updating process does not create a new look-uptable, but values at determined positions in the original look-up tableare modified. Accordingly, the number of items of patch data can beconsiderably reduced compared with when an entirely new profile iscreated. In this manner, the present embodiment is advantageous overconventional image processing systems since the time required for colormeasurement and the time required for calculation is considerablyreduced.

In step S511, the updated look-up table is used to update thedestination profile. In step S512, the updated destination profile iswritten into the MFP 101.

By applying the same process to the MFP 102, color differences caused bythe difference in device status can be considerably suppressed.Therefore, cluster printing that allows a plurality of output devices tooutput the same data can be used. Also, this process is applicable toprinting in which color varies rapidly with time, such aselectro-photography. Although not necessary, it can be for the MFPs 101and 102 to use a common destination profile. It can be also that thelook-up table for conversion from CMYK to L*a*b* be identical.

When the destination profile updated by the above process is used tooutput an image from a printer, the image does not need to be a CMYKimage. This is because, as FIG. 9 shows, in an actual printing flow, ifthere is a source profile 902 for converting image data 901 to L*a*b*image data 903, CMYK image data 905 can be created by using an updateddestination profile 904. For example, when the source profile 902 isused to convert RGB data to L*a*b* data, the image data 901 may be RGBdata. In addition, any source profile may be used if it is used toconvert an input color space to an absolute color space (L*a*b*) handledby the updated destination profile.

The look-up table of the destination profile for conversion from L*a*b*to CMYK, and the look-up table for conversion from CMYK to L*a*b* mayhave any form if input values are in the absolute color space. However,it can be that both look-up tables use identically defined absolutecolor spaces. The actual processing uses a source profile having alook-up table for conversion to an absolute color space identical to theabsolute color space handled by the destination profile.

The outline of the process of the management PC 104 in the firstembodiment is as described above. In the above process, theinterpolation process of step S507 and the look-up table update processof step S510 are described below.

Interpolation Calculation

In the interpolation calculation in step S507, an L*a*b* reference valuefor the patch data (CMYK) is calculated. The look-up table read beforeperforming step S507 is used for conversion from CMYK to L*a*b*. Theread look-up table contains L*a*b* values corresponding to combinationsof CMYK values. By using this look-up table to perform interpolationcalculation, an L*a*b* value for the patch data (CMYK) can becalculated. However, even if a CMYK color space has theoretically equalL*a*b* values, their actual values may differ if K values differ.

FIG. 7 is a flowchart showing an interpolation calculation process ofthe first embodiment.

In step S701, a look-up table for conversion from CMYK to L*a*b* isextracted. In step S702, grouping is performed with the value of K as areference. In general, in many cases, in a look-up table for profile,input values gradually increase. In other words, the look-up table forconversion from CMYK to L*a*b* contains L*a*b* values for CMYK groups inwhich C, M, Y, and K values are changed by a predetermined amount. Forexample, assuming that each of C, M, Y, and K values has seventeenlevels, when the values are grouped with the K value as a reference,seventeen groups are formed.

In step S703, patch data is extracted. This is an operation ofextracting CMYK values in one patch. In step S704, among the extractedCMYK values, the K value is noted and referred to as K1.

Next, the grouped K values in the look-up table are noted. In step S705,two groups around K1 are extracted. For example, when a look-up tablehas 256 grayscales and 17 levels, and K1 is 20, a group in which K=16and a group in which K=32 are extracted. One group having a lesser Kvalue is referred to as Ka, and the other one having a greater K valueis referred to as Kb. For each of the groups Ka and Kb, linearinterpolation is performed by using CMY values. Here, conventionalthree-dimensional linear interpolation can be used (steps S706 andS707). After that, in step S708, for the result of linear interpolationfor the groups Ka and Kb, one-dimensional linear interpolation isperformed by using values in groups Ka and Kb. In other words, based onL*a*b* values for C, M, Y, and Ka, and L*, a*, and b* values for C, M,Y, and Kb, one-dimensional linear interpolation is performed.

As described above, an L*a*b* reference value for patch data is output.In addition, when it is determined in step S709 that the process has notbeen performed for all of the patch data, the process returns to stepS703 and the above steps are repeated. When it is determined in stepS709 that the process has been performed for all of the patch data, theprocess ends.

According to the above-described interpolation calculation process, byusing a look-up table in a destination profile for conversion from CMYKto L*a*b*, and performing special processing on a K value, an L*a*b*reference value for patch data can be found. This result is utilized instep S510 (shown in FIG. 5) for updating the look-up table forconversion from L*a*b* to CMYK.

Updating of Look-Up Table for Conversion from L*a*b* to CMYK

The destination profile is used to convert data in an absolute colorspace to the color space of an output device when actual printing isperformed. Thus, the reason that device instability causes differentoutput results is that the look-up table for conversion from L*a*b* toCMYK in the destination profile is inappropriate. Therefor, step S510for updating the look-up table for conversion from L*a*b* to CMYK isuseful in the first embodiment.

A specific process for updating the look-up table for conversion fromL*a*b* to CMYK is described below with reference to the flowchart shownin FIG. 8.

In step S801, L*a*b* data is extracted from the look-up table forconversion from L*a*b* to CMYK. L*a*b* data is considered lattice pointdata in which a* and b* are incremented by a predetermined value. FIG.11 is an illustration of the presence of lattice point data in an L*a*b*space. For brevity of illustration, FIG. 11 shows an example of 3 by 3by 3 lattice-point data. By way of example, in the case of a look-uptable in which each of L*, a*, and b* has 33 levels, in step S801, from33 by 33 by 33 lattice points, one lattice point is extracted.

In step S802, all measured color values and reference value of eachpatch data 812 are extracted, and reference and measured color valueswhich are closest to each of the L*, a*, and b* values extracted in stepS801 are calculated. FIG. 12 shows an example of calculation. Referenceand measured color values exist in a lattice point space, as shown inFIG. 12, since the values are L*, a*, and b* data. For brevity ofillustration, reference values 1 and 2 are exemplified. Although theexample shown in FIG. 12 has reference values 1 and 2, reference value 1is selected as a search result because reference value 1 is the closestto lattice point data of interest.

The process proceeds to step S803, and calculates the difference(distance) between each reference value of L*, a*, and b* calculated instep S802, and a measured color value corresponding to the referencevalue. The calculated values are used to correct the L*, a*, and b*data. However, when the number of patch data is small, it is often thecase that a reference value, which has a large distance from latticepoint data, is extracted. Since it may be that the reference value isnot greatly affected as described above, in the first embodiment, thedistance between each reference value and each extracted item of L*, a*,and b* data is calculated, and, in step S804, weighting is performedbased on the calculated distance. For example, a Euclidean distance in athree-dimensional space is used as the distance, and the weight isrepresented by

W=1/(dist⁵+1)

where W represents a weight, and dist represents a value obtained bynormalizing a distance from a reference value of each of L*, a*, and b*by using distances for three lattice points. Note that the above is notlimited to the use of three lattice points as described above, it may beapplicable to four lattice points distance, or five lattice pointsdistance, etc.

In step S805, it is determined whether the above processing is repeatedfor all the L*, a*, and b* values in the look-up table.

In the processing through step S805, the differences between referencevalues and measured color values for all the L*, a*, and b* values arecalculated. FIG. 13 is a schematic illustration of the calculateddifferences between reference values and measured color values for allthe lattice points. In FIG. 13, each arrow indicates a direction vectorfrom a measured color value. Although the look-up table can be updatedby shifting the L*, a*, and b* values at lattice points by the directionvectors, due to a difference in affected reference value, there may be adirection vector having an extreme direction and magnitude. In theexample shown in FIG. 13, the direction vector V encircled with thecircle has an extreme magnitude compared with other direction vectorsaround the direction vector V. When this vector V exists, updatedamounts of L*, a*, and b* values at lattice points which correspond tothe vector V are extremely greater than updated amounts of L*, a*, andb* values at surrounding lattice points, thus causing a pseudo-outline.Accordingly, by smoothing the differences (step S806), the L*, a*, andb* values are prevented from being updated to extreme values. Methodsfor smoothing include a method of totaling values at 5 by 5 by 5 latticepoints around a lattice point of interest, and calculating the averageof the values, and a method of multiplying a value at a lattice point ofinterest before calculating an average.

In step S807, lattice point data is changed by adding, to L*a*b* latticepoint data, the smoothed differences between reference values andmeasured color values.

In step S808, one item of the changed L*a*b* data is extracted. Byfinding CMYK values for the changed L*a*b* data, the look-up table inthe destination profile for conversion from L*a*b* to CMYK can beupdated. Accordingly, by using a feature in which an un-updated look-uptable 813 for conversion from L*a*b* to CMYK describes conversion fromL*a*b* to CMYK, CMYK values corresponding to the updated L*, a*, and b*values are found by performing three-dimensional linear interpolationcalculation by using CMYK values at lattice points adjacent to theupdated L*, a*, and b* values (step S809). One example is the look-uptable shown in FIG. 6B. As shown in FIG. 6B, input values are L*, a*,and b* values. Thus, compared with the case of inputting CMYK values,special processing does not need to be performed, and conventionalthree-dimensional linear interpolation may be used. The above processingis performed for all the updated L*a*b* data (step S810).

As described above, new L*, a*, and b* values and corresponding CMYKvalues are obtained. Accordingly, by using the obtained values, thelook-up table for conversion from L*a*b* to CMYK is updated (step S811).

Number of Patches

Although the exemplary number of color patches is 100 (one hundred), itis not limited to this number. It can be also that the colors bemutually at an appropriate distance from one another. In this case, themore the number of patches, the longer the time required for colormeasurement. Thus, overall processing speed decreases, but processingaccuracy increases instead. The fewer the number of patches, the lowerthe accuracy. However, the overall processing speed is increased. If thenumber of patches is too large or too small, an appropriate effectcannot be obtained. However, compared with the technique of the relatedart for creating a new profile, in the first embodiment, only necessarypart of data in the original profile is corrected. Thus, a considerablysmall number of patches enables processing.

First Embodiment as Modified for when CMYK is not Directly Handled inDestination Profile

The first embodiment describes the case of using the destination profilehaving a look-up table for conversion from L*a*b* to CMYK. However, someprinters do not have any destination profiles for direct conversion fromL*a*b* to CMYK. FIG. 10 is a flowchart showing a data flow in a case inwhich a look-up table of a destination profile for conversion from anabsolute color space to an output color space represents conversion fromL*a*b* to RGB. In FIG. 10, a source profile 1002 is used to convert RGBimage data 1001 to L*a*b* image data 1003. A destination profile 1004 isused to convert the L*a*b* image data 1003 to RGB′ image data 1005. TheRGB′ image data 1005 is device-dependent RGB data. For an RGB printer,the RGB′ image data 1005 is output in unchanged form. For a CMYKprinter, the RGB′ image data 1005 is converted to CMYK image data 1006before being output.

Here, similarly to the case of CMYK data, the RGB image data 1001 can bedirectly used as the RGB′ image data 1005. For an RGB printer, the RGBimage data 1001 is directly output without using profiles 1003 and 1004.By performing color measurement on the output image, a measured colorvalue is obtained. In addition, by using patch data and a look-up tablefor conversion from RGB to L*a*b*, which is included in the destinationprofile, an L*a*b* reference value is calculated. In the CMYK case,special interpolation must be used since the K value is special. In theabove case, no value corresponds to the K value. Thus, three-dimensionallinear interpolation is performed, with the image data unchanged.

By using the measured color value, the L*, a*, and b* reference values,and the look-up table of the destination profile for L*a*b* to RGB canbe updated.

For a CMYK printer, accuracy changes when the RGB′ image data 1005 isconverted to the CMYK image data 1006. However, similarly, a measuredcolor value can be acquired and used.

As described above, regardless of the color space type, this embodimentis applicable to a case in which the destination profile includes alook-up table for conversion from an input color space to an absolutecolor space and a look-up table for conversion from an absolute colorspace to an output color space, and in which input and output colorspaces handled by both look-up tables are of the same type.

Alternate Process for Updating Look-up Table for Conversion from L*a*b*to CMYK

Another process for updating look-up table for conversion from L*a*b* toCMYK is described below.

FIG. 14 is a flowchart showing another exemplary process for updating alook-up table for conversion from L*a*b* to CMYK in accordance with anembodiment of the present invention.

In step S1401, L*a*b* data is extracted from the look-up table. Next,each L*a*b* reference value previously calculated and each measuredcolor value 1414 obtained by color measurement are read and a conditionrange is determined in step S1402. The condition range is apredetermined range around an extracted lattice point in the look-uptable. In step S1403, it is determined whether the reference value iswithin the condition range. When the reference value is included in thecondition range, all differences between the L*a*b* reference values andthe measured color values, which correspond thereto, are found (stepS1405), and the average of the differences is calculated (step S1415).This example is shown in FIG. 15. The lattice point data (in the L*a*b*space) shown in FIG. 15A is the L*a*b* data extracted in step S1401.FIG. 15B shows the condition range set in step S1402. In the exampleshown in FIG. 15B, the condition range is set in size of 5 by 5 by 5lattice points. In the example shown in FIG. 15B, two reference values,reference values 1 and 2, are included in the condition range. Thus,differences between lattice point data and each measured color value arecalculated and the average of the differences is calculated. Byperforming this manner, an effect similar to that of smoothing in theabove embodiment can be obtained, thus preventing a pseudo-outline frombeing generated.

If it is determined in step S1403 that the L*a*b* reference value is notincluded in the condition range, an L*a*b* reference value, which is theclosest in distance, is calculated in step S1404, and a differencebetween the L*a*b* reference value and a corresponding measured colorvalue is weighted in accordance with the distance in step S1406. By wayof example, similarly to the above case, a Euclidean distance inthree-dimensional space is used as the distance. The weight isrepresented by

W=1/(dist⁵+1)

where W represents a weight, and dist represents a value obtained bynormalizing a distance from a reference value of each of L*, a*, and b*by using distances for three lattice points. It is not limited to thethree lattice points, and it can be four lattice points or five latticepoints.

When the L*a*b* reference value is out of the condition range, it isoften the case that the value of the weight may be uniform (e.g., aquarter).

After all the above operations are performed, the calculated value isused to change all the L*a*b* data (step S1409). In step S1410, one itemof the changed L*a*b* data is extracted. By using a look-up table 1408for conversion from L*a*b* to CMYK, in step S1411, CMYK data iscalculated based on (three-dimensional) linear interpolation. In stepS1412, it is determined whether all the data have been processed. If so,in step S1413, the look-up table for conversion from L*a*b* to CMYK isupdated.

In this manner, similarly to the above-described example, the look-uptable for conversion from L*a*b* to CMYK can be updated.

According to the first embodiment described above, by using referencevalues calculated by using a look-up table for converting data definedin an input color space included in a profile to data defined in anabsolute color space, measured color values obtained by performing colormeasurement on patch data, and a look-up table for converting datadefined in an absolute color space to data in an output color space, aprofile for converting data defined in the absolute color space to datain the output color space can be updated. Thus, optimal color matchingcan be performed for a device whose output can be easily influenced by astate at an output time. Profile updating in this case can be simplyperformed by changing a part of the original profile without creating anew profile. Accordingly, compared with the known technique ofre-creating all profiles, the number of patches can be reduced, and, inaddition, simplified processing can considerably reduce the processingtime required for profile updating.

By applying the above-described profile updating process to a pluralityof devices, in each of all the devices, optimal color matching isperformed, thus substantially reducing a color difference, for eachdevice in the case of using plural devices.

Second Embodiment

As described above, by using a tool for re-creating an ICC profile fromthe beginning, and a calorimeter, an ICC profile that matches a devicestatus at the required time is created. Thus, an image can be output ina desirable color. However, when many color patches are output and eachcolor patch needs to be measured, this process can become timeconsuming. Accordingly, it is difficult to apply this technique to adevice whose status varies daily, such as an electro-photographicdevice. In particular, when the user wishes to output a limited image,creation of new profiles is not efficient.

Accordingly, in the second embodiment, by analyzing color distributionof an image designated by the user, extracting only colors which aremainly used in the image, patches, whose number is less and which areoptimal, can be output. In the second embodiment, profiles can beupdated by using fewer patches to reduce processing time.

The configurations of an image processing system, a management PC, andMFPs in the second embodiment are identical to those shown in FIGS. 2,3A, and 3B. Accordingly, the second embodiment is described withreference to FIGS. 2, 3A, and 3B.

In the second embodiment, when CMYK data is sent from the client PC 105to the MFPs 101 and 102, the data processing unit 305 performs theprocessing shown in FIG. 16. When the data processing unit 305 receivesimage data 1601, the image data 1601 is represented in CMYK. By using asource profile 1602, the CMYK data 1601 is converted to image data 1603which is represented in an absolute color space such as L*a*b*. Next, byusing a destination profile 1604, the image data 1603 is converted toCMYK′ image data 1605. Although the CMYK image data 1601 and the CMYK′image data 1605 are identical in data dimensions, their actual valuesdiffer since they are defined by different devices. In addition,regarding exception handling, as indicated by the arrow 1610 shown inFIG. 16, the CMYK image data 1601 can be directly output as the CMYK′image data 1605 without using a source profile 1602 and a destinationprofile 1604. Since device characteristics are not reflected in thiscase, it is often the case that an undesirable image is output.

The above color conversion function is also realized by the managementPC 104 and the client PCs 105 and 107. Even if RGB image data 1606 isinput, the RGB image data 1606 is converted to L*a*b* imaged data byusing a source profile 1607. After that, similar processing isperformed. However, the color space of an output device is CMYK. Thus,the RGB image data 1606 cannot be directly output as indicated by thearrow 1610.

Processing Outline

A profile adjusting process of the management PC 104 in the secondembodiment is described below with reference to the flowchart shown inFIG. 17.

A program which corresponds to the flowchart in FIG. 17 is included in acolor management program installed into the HDD 4 in the management PC104. This program is loaded into the RAM 3 and is executed by the CPU 1.

In step S1701, image data which is output from the client PC 105 inresponse to a user's instruction is read. In step S1702, a user requestis received, which determines the number of output patches. When theuser wishes highly accurate color correction, the number of patchesincreases. When speed for correction is emphasized, the number ofpatches decreases.

Proceeding to step S1703, the process converts data of all pixelsforming the image data read in step S1701 to data in adevice-independent absolute color space (e.g., L*a*b*). In general,image data output from a device is defined in a device-dependent colorspace such as RGB and CMYK. These color spaces are not such uniformcolor spaces that a distance in the color space is proportional to acolor difference felt by a human. Thus, these color spaces are notappropriate in clustering, which is performed thereafter. Conversely, inan absolute color space typified as L*a*b*, a distance in the colorspace is proportional to a color difference felt by a human. Thus, itmay be said that the absolute color space is appropriate for theclustering, which is performed thereafter. Thus, processing in step 1703is essential. Although, in the second embodiment, L*a*b* is used, anycolor space may be used if it is independent from a device.

In step S1704, by using clustering, representative values, whose numberis the number of patches, which satisfy a user request are calculated.In this calculation, L*a*b* data items, whose number satisfies the userrequest, are output. In step S1705, the data items are converted to havean output color space form. In step S1706, the converted data items arethen output.

In step S1707, it is determined whether processing has been performedfor all image data, which is requested for printing by the user. If yes,the process proceeds to step S1708. If not, the process returns to stepS1701 and repeats the processing.

In step S1708, like data is deleted. When processing is performed forplural images, like-color data may be output. Since such data increasesprocessing time, it is preferable to delete such data.

In step S1709, creation of a patch image is performed. The secondembodiment relates to a printer for outputting an image in CMYK.Accordingly, CMYK patches are created. For a printer for outputting animage in color other than CMYK, patches which match an output colorspace of the printer need to be created.

Finally, in step S1710, profile updating is performed. Here, the patchdata created in the above processing is used. This makes it possible tocorrect only each required portion in the profile. This step S1710corresponds to the process in accordance with the flowchart (shown inFIG. 5) described in the first embodiment. Therefore, regarding specificprocessing of step S1710, reference is made to the description of thefirst embodiment.

The outline of the process of the management PC 104 in the secondembodiment is as described above. Each of steps S1702 to S1705 isspecifically described below.

Step S1702: Regarding User Request

Reception of the user request in step S1702 is described.

In step S1702, the user request is received. As described above, thisuser request includes information about whether the user emphasizescolor reproduction accuracy, or information about whether the timerequired for color correction is to be shortened. When consideringlook-up-table rewriting, in general, as the number of patches isgreater, the color reproduction accuracy is higher, but the processingtime is longer. Conversely, as the number of patches is smaller, theprocessing time only needs to be shorter, but the color reproductionaccuracy deteriorates. Accordingly, by utilizing the above trade-offrelationship to display the user interface screen shown in FIG. 18, theuser can consider the request. As shown in FIG. 18, the trade-offrelationship between the color reproduction accuracy and the processingspeed is displayed in a slide-bar form. The user can designate the colorreproduction accuracy and the processing speed by, for example, using amouse to slide a triangular pointer. By way of example, in the case ofemphasizing the color reproduction accuracy even if the processing speedis slow, the pointer is moved to the right. In the case of increasingthe processing speed even if the color reproduction accuracy is low, thepointer is moved to the left. Positional information of the pointerposition is used as the user request in the clustering in step S1704.

Step S1703: Conversion to Absolute Color Space

In step S1703, image data in the device-dependent color space isconverted to image data in the device-independent color space. Anytechnique may be used for the conversion. In the second embodiment,interpolation using a look-up table is described below.

The ICC profile includes a look-up table for converting adevice-dependent color space to a device-independent color space(absolute color space), and a look-up table for converting adevice-independent color space to a device-dependent color space.Accordingly, by using the look-up tables to perform interpolation, colorconversion is performed. Here, in particular, a look-up table (forconversion from a device-dependent color space to a device-independentcolor space) which is used as a source profile is used. This is becausethe use of a look-up table used in an actual printing process enablesoutput of optimal patches.

When the color space of image data is RGB, conventional interpolation isperformed. However, in the case of CMYK, even if input data and outputdata are represented in L*a*b* values, the actual color may considerablydiffer depending on the K value. Thus, interpolation based on thisdifference is performed.

FIG. 19 is a flowchart showing an interpolation process of the secondembodiment.

In step S1901, it is determined whether the received image data is CMYKimage data. If not, the process proceeds to step S1902 and performsconventional linear interpolation. By way of example, if the image datais RGB data, a look-up table for conversion from RGB to L*a*b* isextracted. Three-dimensional linear interpolation is performed, and theprocess ends. If the read data is CMYK data, the process proceeds tostep S1903, and a look-up table for conversion from CMYK to L*a*b* isextracted.

In step S1904, grouping is performed with the K value as a referencevalue. In general, in the look-up table of the profile, it is often thecase that input values gradually increase. In other words, the look-uptable (for conversion from CMYK to L*a*b*) stores L*, a*, and b* valuesfor a CMYK group obtained by changing C, M, Y, and K values by eachpredetermined amount. For example, assuming that each of C, M, Y, and Kvalues has seventeen levels, when the values are grouped with the Kvalue as a reference, seventeen groups are formed.

In step S1905, pixel data is extracted from the image data. All thepixel data must be converted to L*a*b*. In step S1906, among theextracted C, M, Y, and K values, the K values is noted and referred toas K1.

Next, the grouped K values in the look-up table are noted. Two groupsaround K1 are extracted (step S1907). For example, when the look-uptable has 256 grayscales, and 17 levels, and K1 is 20, a group in whichK=16 and a group in which K=32 are extracted. One group having a lesserK value is referred to as Ka, and the other one having a greater K valueis referred to as Kb. For each of the groups Ka and Kb, linearinterpolation is performed by using CMY values. In particular,conventional three-dimensional linear interpolation can be used (stepsS1908 and S1909). After that, in step S1910, for the result of linearinterpolation for the groups Ka and Kb, one-dimensional linearinterpolation is performed by using values in groups Ka and Kb. In otherwords, based on L*a*b* values for C, M, Y, and Ka, and L*a*b* values forC, M, Y, and Kb, one-dimensional linear interpolation is performed.

As described above, the pixel levels are output as L*a*b* data. Inaddition, if it is determined in step S1911 that the processing has notbeen performed for all the pixel data, the process returns to step S1905and repeats the processing. If it is determined that the processing hasbeen performed all the pixel data, the process ends.

Note that profiles other than ICC profiles or other comparable methodsor systems within the spirit and scope of the present invention may beemployed.

Step S1704: Calculation of Representative Values by Clustering

In step S1704, representative values are calculated by clustering. Inthis context, the word “clustering” means the process of classifyingdata items into a predetermined number. All pixel data converted to theabsolute color space of L*a*b* is subjected to clustering.

FIG. 20 is a flowchart showing a representative value calculatingprocess in the second embodiment by utilizing clustering.

In step S2001, the number of patches is determined based on theinformation received in step S1702. For example, in the example of theuser interface screen shown in FIG. 18, when the triangular pointer ispositioned at the leftmost position, the number of patches is set tofive. The number of patches is incremented by five when the triangularpointer is moved to the right every one level. When the triangularpointer is positioned at the rightmost position, the number of patchesis set to 75. The number of patches may be linearly increased inaccordance with levels defined by the user. Alternatively, by analyzingthe user definition and pixel distribution, the optimal number ofpatches may be set.

In step S2002, clustering is performed. A conventional clustering methodmay be used. For example, hierarchical clustering typified by a medianmethod may be performed, or nonhierarchical clustering in which aninitial value is given and switched may be used. In this operation, allthe pixel data are classified into clusters, whose number is the numberof patches.

In step S2203, an average in each cluster is calculated. All the pixeldata are classified into the number determined in step S2001 by theprocessing of step S2002. Accordingly, each average of the classifiedvalues is calculated. The calculated average is a representative value(reference value) in the corresponding cluster, and the number ofaverages is the number of patches.

Step 1705: Conversion to Output Color Space

In step S1705, the L*, a*, and b* values calculated in step S1704 areconverted to values in the output color space of the output device. Instep S1705, values in the look-up table for output are used to performthe data conversion. In particular, a destination profile is used. Evenif input data and output data theoretically have equal L*, a*, and b*values, it is often the case that their actual values differ if the Kvalues differ. Thus, patch data is generated based on a look-up tableused in a printing process. In this case, input data hasthree-dimensional data of L*, a*, and b*. Accordingly, by finding L*,a*, and b* values close to the input L*, a*, and b* values, andperforming three-dimensional linear interpolation by using C, M, Y, andK values corresponding to the found L*, a*, and b* values, conversion tothe output color space is performed. As described above, CMYK patchesare generated.

Second Embodiment as Modified for User Marking

Although the above-described second embodiment allows the user todetermine the color reproduction accuracy and the processing speed byusing the user interface shown in FIG. 18, the user may requestcorrection of only a particular portion of an image. The followingdescribes a modification of the second embodiment in order to cope withthe above case.

When the user request is received in step S1702, and a particular objectregion of an image needs correction, the user is allowed to mark theregion. One example is shown in FIG. 21. For example, it is assumed thatthe user wishes to correct a printed color of an arrow-shaped figureobject 2101 at the top left. In this case, a circle mark 2102 is addedto the figure object 2101. The mark may have any shape other than thecircle.

An actual processing flow is shown in FIG. 22. A program correspondingto this flowchart is included in the color management program installedin the HDD 4 in the management PC 104. This program is loaded into theRAM 3 and is executed by the CPU 1.

In step S2201, image data which is output in response to a user'sinstruction is read from, for example, the client PC 105. In step S2202,positional information (the figure object 2101 of FIG. 21) of the objectregion (to which the mark 2102 is added) designated by the user isreceived. In step S2203, pixel levels of the image object to which themark 2102 is added are extracted.

The process proceeds to step S2204, and the extracted pixel levels areconverted to values in the absolute color space. The values in theabsolute color space are calculated by interpolation using a look-uptable of the source profile. After that, in step S2205, the values inthe absolute color space are converted into pixel levels in an outputcolor space. The pixel levels in the output color space are calculatedby interpolation using a look-up table of the destination profile. Instep S2206, patch data is output.

Next, in step S2207, it is determined whether processing has beenperformed for all the extracted image data. If the processing has notperformed, the process returns to step S2201. If the processing has beenperformed, the process proceeds to step S2208.

In step S2208, it is determined whether like data has been generated. Ifso, the like data is deleted. In step S2209, a patch image is generated.Finally, in step S2210, only L*, a*, and b* values which are close tothe extracted pixel levels are subjected to profile updating asdescribed in the first embodiment, after which the process ends.

As described above, the user is allowed to designate a particularportion of an image for which processing is performed. Thus, theprocessing load required for clustering, etc., can be relativelyreduced. In addition, the result of correction is as intended by theuser.

The processing for determining the number of patches by using theabove-described clustering and the processing for allowing the user toperform marking may be combined.

According to the above-described second embodiment, in the imageprocessing system for outputting image data, by receiving a userrequest, classifying data on the basis of the received information, andgenerating patch data from the classified data, optimal patches whichmatch a particular image designated by the user can be created.

In addition, by receiving positional information of an image objectdesignated by the user, classifying data on the basis of the receivedinformation, and generating patch data from the classified data, in theparticular image designated by the user, patches of a portion for whichcolor correction is to be particularly performed can be created.

As described above, according to the first and second embodiments, colorconversion which matches a changing device status as it changesmomentarily can be easily performed. This enables the device toconstantly output an image in a desired color.

In addition, in the case of outputting the same data by a plurality ofdevices, the colors of the outputs can be set to be substantiallyidentical.

Other Embodiments

The embodiments of the present invention have been described in detail.The present invention may be applied to a system formed by a pluralityof systems, or may be applied to a single system.

The present invention includes a case in which, by providing the programcode of software realizing functions of the above-described embodimentsto a system or system directly or from a remote place, a computer in thesystem or system reads and executes the program code. If this case hasprogram functions, it does not need to have a program form.

Therefore, in order for a computer to realize functional processing ofthe present invention, program code which is installed into thecomputer, itself, realizes the present invention. In other words, thepresent invention includes a computer program for realizing functionalprocessing of the present invention.

In this case, any program form can be used, such as object code, aprogram executed by an interpreter, or script data supplied to anoperating system, if it has program functions.

Recording media for providing programs include, for example, a flexibledisk, a hard disk, an optical disk, a magneto-optical disk, MO, CD-ROM,CD-R, CD-RW, a magnetic tape, a nonvolatile memory, ROM, and DVD(DVD-ROM, DVD-R).

Regarding a program providing method, by using a browser of a clientcomputer to access a site on the Internet, and downloading, from thesite, a computer program of the present invention, or a compressed fileincluding an automatic installing function, to a recording medium suchas a hard disk, the program can be provided. In addition, program codeconstituting the program of the present invention is divided into aplurality of files. Each file may be downloaded from different Web sitesto accomplish the objectives of the present invention. In other words,the present invention also includes a WWW server from which programfiles for realizing functional processing of the present invention aredownloaded to plural users.

The present invention is realized such that a program of the presentinvention is distributed to users in a form encrypted and stored in arecording medium such as CD-ROM, key information for decryption isdownloaded from a site through the Internet to each user satisfyingpredetermined conditions, and the key information is used to execute theencrypted program so that the decrypted program is installed in acomputer.

The functions of the above-described embodiments can be realized suchthat a computer executes a read program. In addition, based oninstructions of the program, an OS running on the computer executes allor part of actual processing, whereby the functions of theabove-described embodiments can be realized.

After a program read from a recording medium is written in a memory inan add-in board inserted into a computer or add-in unit connected to thecomputer, based on instructions of the program, a CPU or the like in theadd-in board or add-in unit executes all or part of actual processing,whereby the functions of the above-described embodiments are realized.

While the present invention has been described with reference toexemplary embodiments, it is to be understood that the invention is notlimited to the disclosed embodiments. On the contrary, the invention isintended to cover various modifications and equivalent arrangementsincluded within the spirit and scope of the appended claims. The scopeof the following claims is to be accorded the broadest interpretation soas to encompass all such modifications and equivalent structures andfunctions.

1. An image processing system comprising: output means for allowing anoutput device to output patch-data items of plural multi-order colors;acquiring means for acquiring color values, in a device independentcolor space, of the patch-data items output from the output device;reference-value calculating means for calculating reference values byconverting the plural multi-order colors based on a first colorconversion table containing correspondence between a color space basedon the output device and the device independent color space; differencecalculating means for calculating differences between the color valuesacquired by the acquiring means and the reference values, weightingmeans for weighting the calculated differences with the differencesbetween lattice point data, in the device independent color space,extracted from a second color conversion table and the calculatedreference values; and correcting means for correcting, based on thedifferences weighted by the weighting means, the second color conversiontable containing correspondence between the device independent colorspace and an output color space based on the output device.
 2. The imageprocessing system according to claim 1, further comprising smoothingmeans for smoothing the differences for the correcting means.
 3. Theimage processing system according to claim 1, further comprising: inputmeans for inputting image data; receiving means for receiving a userrequest concerning one of color-reproduction accuracy and processingspeed; and patch-data generating means for generating the patch dataitems based on the image data and the user request.
 4. The imageprocessing system according to claim 3, wherein the patch-datagenerating means includes: setting means for setting the number of patchdata items in response to the user request; clustering means forperforming clustering which divides pixels constituting the image datainto clusters, whose number is the set number of patch data items; andcluster reference value calculating means for calculating a referencevalue for the patch data items in each of the clusters.
 5. The imageprocessing system according to claim 1, further comprising: input meansfor inputting image data; designating means for designating auser-desired object region in the input image data; and patch-datagenerating means for generating the patch data items based on thedesignated object region.
 6. An image processing method comprising: anoutput step of allowing an output device to output patch-data items ofplural multi-order colors; an acquiring step of acquiring color values,in a device independent color space, of the patch-data items output fromthe output device; a reference-value calculating step of calculatingreference values by converting the plural multi-order colors based on afirst color conversion table containing correspondence between a colorspace based on the output device and the device independent color space;a difference calculating step of calculating differences between thecolor values acquired in the acquiring step and the reference values; aweighting step of weighting the calculated differences with thedifferences between lattice point data, in the device independent colorspace, extracted from a second color conversion table and the calculatedreference values; and a correcting step of correcting, based on thedifferences weighted by the weighting step, the second color conversiontable containing correspondence between the device independent colorspace and an output color space based on the output device.
 7. The imageprocessing method according to claim 6, further comprising a smoothingstep of smoothing the differences for the correcting step.
 8. The imageprocessing method according to claim 6, further comprising: an inputstep of inputting image data; a receiving step of receiving a userrequest concerning one of color-reproduction accuracy and processingspeed; and a patch-data generating step of generating the patch dataitems based on the image data and the user request.
 9. The imageprocessing method according to claim 8, wherein the patch-datagenerating step includes steps of: a setting step of setting the numberof patch data items in response to the user request; a clustering stepof performing clustering which divides pixels constituting the imagedata into clusters, whose number is the set number of patch data items;and a cluster reference value calculating step of calculating areference value for the patch data items in each of the clusters. 10.The image processing method according to claim 6, further comprising: aninput step of inputting image data; a designating step of designating auser-desired object region in the input image data; and a patch-datagenerating step of generating the patch data items based on thedesignated object region.
 11. A computer-readable storage medium storinga computer program for executing an image processing method according toclaim
 6. 12. A color management system comprising: an output unitconfigured to allow an output device to output patch-data items ofplural multi-order colors; an acquiring unit configured to acquire colorvalues, in a device independent color space, of the patch-data itemsoutput from the output device; a reference-value calculating unitconfigured to calculate reference values by converting the pluralmulti-order colors based on a first color conversion table containingcorrespondence between a color space based on the output device and thedevice independent color space; a difference calculating unit configuredto calculate differences between the color values acquired by theacquiring means and the reference values a weighting unit configured toweight the calculated differences with the differences between latticepoint data, in the device independent color space, extracted from asecond color conversion table and the calculated reference values; and acorrecting unit configured to correct, based on the differences weightedby the weighting unit, the second color conversion table containingcorrespondence between the device independent color space and an outputcolor space based on the output device.